/****************************************************
/*文件名：common.js
/*功能描述：
/*      该js里的所有函数为学生端、教师端、家长端通用
/*  的函数。
/*
/****************************************************/

/*自定义浮动层窗口*/
$.fn.smartFloat = function() {
    var position = function(element) {
        var top = element.position().top, pos = element.css("position");
        $(window).scroll(function() {
            var scrolls = $(this).scrollTop();
            if (scrolls > top) {
                if (window.XMLHttpRequest) {
                    element.css({
                        position: "fixed",
                        top: 0
                    });    
                } else {
                    element.css({
                        top: scrolls
                    });    
                }
            }else {
                element.css({
                    position: "absolute",
                    top: top
                });    
            }
        });
    };
    return $(this).each(function() {
        position($(this));                         
    });
};

/*
用途：为所有的btn添加绑定事件
*/
$('input[type="button"]').live("click",function(event){
    $(this).addClass("clicked");
    event.stopPropagation();
});

/*
用途：为body添加绑定事件
*/
$("body").live("click",function(){
    $('input[type="button"]').removeClass("clicked");
});


function addCss(CssPath) {
	var oHead = document.getElementsByTagName('HEAD').item(0);
	var oLink = document.createElement("link");
	oLink.setAttribute("rel", "stylesheet");
	oLink.setAttribute("type", "text/css");
	oLink.setAttribute("href", CssPath);
	oHead.appendChild(oLink);
}
/*
用途：cookie处理
*/
function SetCookie(sName, sValue) {
	date = new Date();
	s = date.getDate();
	date.setDate(s + 1);
	document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString();
}

function delCookie(name) {
	document.cookie = name + "=;expires=" + (new Date(0)).toGMTString();
}

function GetCookie(sName) {
	var aCookie = document.cookie.split("; ");
	for (var i = 0; i < aCookie.length; i++) {
		var aCrumb = aCookie[i].split("=");
		if (sName == aCrumb[0]) {
			return unescape(aCrumb[1]);
		}
	}
	return null;
}
/*cookie处理结束*/

/* 
用途：获取当前页面位置

*/
function getLocation() {
	var curLocation="";
	$.ajax({
		type: "Post",
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		url: "../Common.aspx/getLocation",
		async: false,
		data: "{}",
		success: function(data) {
			if (data.d != null) {
				curLocation = data.d;
			}
		}
	});
	return curLocation;
}

/* 
用途：保存当前位置至session
输入：location 当前位置

*/
function setLocation(curLocation) {
	$.ajax({
		type: "Post",
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		url: "../Common.aspx/setLocation",
		data: "{'location':'" + curLocation + "'}",
		success: function(data) {}
	});
}
/*
用途：清空session

*/
function clearSession() {
	$.ajax({
		type: "Post",
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		url: "../Common.aspx/clearSession",
		data: "{}",
		success: function(data) {
			window.location.href = '../Login.aspx';
		}
	});
}

/* 
用途：显示提示对话框
*/
function showDialog(msg) {
    $("body").prepend("<div id='tw-flash' class='flash warning'>" + msg + "</div>");
    $("#tw-flash").fadeTo(2000, "1").fadeOut(1000, function() {
        $(this).remove()
    });
    $(this).remove();
}

/* 
用途：显示提示对话框
输入：fn1 点击确定时，调用的函数;fn2 点击取消时，调用的函数,如果取消时，无需调用函数，则为null
*/
function showConfirm(msg,fn1,fn2) {
    $("#dialog-confirm").remove();
    $("body").append('<div id="dialog-confirm" title="提示"><div class="msg-confirm"><p style="font-size: 14px;color:#004E98">' + msg + '</p></div></div>');
    $("#dialog-confirm").dialog({
        resizable: false,
        height:"auto",
        width:300,
        modal: true,
        close:function() {
            $("#dialog-confirm").remove();
        },
	    buttons: [{
	        text: "确定",
	        click: function() {
	            var dlg = $(this).dialog("close");
	            if(fn1!=null)
	                fn1 && fn1.call(dlg, true); 
	        }
	    }, {
	        text: "取消",
	        click: function() {
	            var dlg = $(this).dialog("close");
	            if(fn2!=null)
	                fn2 && fn2.call(dlg, true); 
	        }
        }]
    });
}

/*
用途：显示无数据记录
*/
function showNoData()
{
    $("#content").html("<div class='gray content_inner'>无数据记录！</div>");
}

/*
用途：显示服务器出错
*/
function showServerError()
{
    $("#content").html("<div class='gray content_inner'>数据返回失败，稍后再试试看吧......</div>");
}

/*
用途：显示loading加载
*/
function showLoading()
{
    $("#content").html("<div class='loadingwrapper'><img src='../images/loading.gif'></div>");
}
/*
用途：显示loading加载
*/
function showresultLoading()
{
    $("#result").html("<div class='loadingwrapper'><img src='../images/loading.gif'></div>");
}

/* 
用途：检查输入对象的值是否符合E-Mail格式 
输入：str 输入的字符串 
返回：如果通过验证返回true,否则返回false 

*/
function isEmail(str) {
	var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
	if (myReg.test(str)) return true;
	return false;
}

/* 
用途：检查输入手机号码是否正确 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false

*/
function checkMobile(s) {
	var regu = /^[1][3,5,8][0-9]{9}$/;
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}

/* 
用途：检查输入的电话号码格式是否正确 
输入： 
strPhone：字符串 
返回： 
如果通过验证返回true,否则返回false 

*/
function checkPhone(strPhone) {
	var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
	var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;
	if (strPhone.length > 9) {
		if (phoneRegWithArea.test(strPhone)) {
			return true;
		} else {
			return false;
		}
	} else {
		if (phoneRegNoArea.test(strPhone)) {
			return true;
		} else {
			return false;
		}
	}
}

/* 
用途：检查输入字符串是否为空或者全部都是空格 
输入：str 
返回： 
如果全是空返回true,否则返回false 
*/
function isNull(str) {
	if (str == "") return true;
	var regu = "^[ ]+$";
	var re = new RegExp(regu);
	return re.test(str);
}
/* 
用途：检查输入字符串是否只由英文字母和数字和下划线组成 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false 

*/
function isNumberOr_Letter(s) { //判断是否是数字或字母 
	var regu = "^[0-9a-zA-Z\_]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}

/* 
用途：检查输入字符串是否只由英文字母和数字组成 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false 

*/
function isNumberOrLetter(s) { //判断是否是数字或字母 
	var regu = "^[0-9a-zA-Z]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}

/* 
用途：检查输入字符串是否只由汉字、字母、数字组成 
输入： 
dateStr：字符串 
返回： 
如果通过验证返回true,否则返回false 

*/
function isChinaOrNumbOrLett(s) { //判断是否是汉字、字母、数字组成 
	var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}

/* 
function:cTrim(sInputString,iType) 
description:字符串去空格的函数 
parameters:iType：1=去掉字符串左边的空格 

2=去掉字符串左边的空格 
0=去掉字符串左边和右边的空格 
return dateStr:去掉空格的字符串 

*/
function cTrim(sInputString, iType) {
	var sTmpStr = ' ';
	var i = -1;

	if (iType == 0 || iType == 1) {
		while (sTmpStr == ' ') {
			++i;
			sTmpStr = sInputString.substr(i, 1);
		}
		sInputString = sInputString.substring(i);
	}

	if (iType == 0 || iType == 2) {
		sTmpStr = ' ';
		i = sInputString.length;
		while (sTmpStr == ' ') {
			--i;
			sTmpStr = sInputString.substr(i, 1);
		}
		sInputString = sInputString.substring(0, i + 1);
	}
	return sInputString;
}

/* 
用途：字符1是否以字符串2结束 
输入：str1：字符串；str2：被包含的字符串 
返回：如果通过验证返回true,否则返回false 

*/
function isLastMatch(str1, str2) {
	var index = str1.lastIndexOf(str2);
	if (str1.length == index + str2.length) return true;
	return false;
}

/* 
用途：字符1是否以字符串2开始 
输入：str1：字符串；str2：被包含的字符串 
返回：如果通过验证返回true,否则返回false 

*/
function isFirstMatch(str1, str2) {
	var index = str1.indexOf(str2);
	if (index == 0) return true;
	return false;
}

/* 
用途：字符1是包含字符串2 
输入：str1：字符串；str2：被包含的字符串 
返回：如果通过验证返回true,否则返回false 

*/
function isMatch(str1, str2) {
	var index = str1.indexOf(str2);
	if (index == -1) return false;
	return true;
}

/* 
用途：检查输入对象的值是否符合整数格式 
输入：str 输入的字符串 
返回：如果通过验证返回true,否则返回false 
*/
function isInteger(str) {
	var regu = /^[-]{0,1}[0-9]{1,}$/;
	return regu.test(str);
}
/* 
用途：检查输入字符串是否是带小数的数字格式,可以是负数 
输入：str字符串 
返回：如果通过验证返回true,否则返回false 

*/
function isDecimal(str) {
	if (isInteger(str)) return true;
	var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
	if (re.test(str)) {
		if (RegExp.$1 == 0 && RegExp.$2 == 0) return false;
		return true;
	} else {
		return false;
	}
}

/* 
用途：检查输入字符串是否符合正整数格式 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false 

*/
function isNumber(s) {
	var regu = "^[0-9]+$";
	var re = new RegExp(regu);
	if (s.search(re) != -1) {
		return true;
	} else {
		return false;
	}
}

/* 
用途：检查输入字符串是否符合金额格式 
格式定义为带小数的正数，小数点后最多三位 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false 

*/
function isMoney(s) {
	var regu = "^[0-9]+[\.][0-9]{0,3}$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}

/*用途：校验ip地址的格式 
输入：strIP：ip地址 
返回：如果通过验证返回true,否则返回false；
*/
function isIP(strIP) {
	if (isNull(strIP)) return false;
	var re = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正则表达式 
	if (re.test(strIP)) {
		if (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256) return true;
	}
	return false;
}

/* 
用途：检查输入对象的值是否符合端口号格式 
输入：str 输入的字符串 
返回：如果通过验证返回true,否则返回false 

*/
function isPort(str) {
	return (isNumber(str) && str < 65536);
}

/* 
用途：判断是否是日期 
输入：date：日期；fmt：日期格式 
返回：如果通过验证返回true,否则返回false 
*/
function isDate(date, fmt) {
	if (fmt == null) fmt = "yyyyMMdd";
	var yIndex = fmt.indexOf("yyyy");
	if (yIndex == -1) return false;
	var year = date.substring(yIndex, yIndex + 4);
	var mIndex = fmt.indexOf("MM");
	if (mIndex == -1) return false;
	var month = date.substring(mIndex, mIndex + 2);
	var dIndex = fmt.indexOf("dd");
	if (dIndex == -1) return false;
	var day = date.substring(dIndex, dIndex + 2);
	if (!isNumber(year) || year > "2100" || year < "1900") return false;
	if (!isNumber(month) || month > "12" || month < "01") return false;
	if (day > getMaxDay(year, month) || day < "01") return false;
	return true;
}

function getMaxDay(year, month) {
	if (month == 4 || month == 6 || month == 9 || month == 11) return "30";
	if (month == 2) if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) return "29";
	else return "28";
	return "31";
}


/* 
用途：检查输入的起止日期是否正确，规则为两个日期的格式正确， 
且结束如期>=起始日期 
输入： 
startDate：起始日期，字符串 
endDate：结束如期，字符串 
返回： 
如果通过验证返回true,否则返回false 

*/
function checkTwoDate(startDate, endDate) {
	if (!isDate(startDate)) {
		alert("起始日期不正确!"); 
		return false;
	} else if (!isDate(endDate)) {
		alert("终止日期不正确!"); 
		return false;
	} else if (startDate > endDate) {
		alert("起始日期不能大于终止日期!"); 
		return false;
	}
	return true;
}

/* 
用途：判断是否是日期 
输入：dateStr：日期,默认是yyyymmdd格式 
返回：如果通过验证返回true,否则返回false 

*/
function checkDate(dateStr) {
	if (dateStr == '') return true;
	if (dateStr.length != 8 || !isNumber(dateStr)) return false;
	var year = dateStr.substring(0, 4);
	if (year > "2100" || year < "1900") return false;
	var month = dateStr.substring(4, 6);
	if (month > "12" || month < "01") return false;

	var day = dateStr.substring(6, 8);
	if (day > getMaxDay(year, month) || day < "01") return false;

	return true;
}

/* 
用途：检查输入的电话号码格式是否正确 
输入： 
s：字符串 
返回： 
如果通过验证返回正确图片,否则返回提示信息

*/
function checkMobilespan(s){
 var msgspan = "&nbsp;&nbsp;&nbsp;<img src='../images/ok.png' style='width:12px;height:12px'>";
 var errospan="格式不正确,请填写手机号或区号-电话号码";
 var regu = /^[1][3,5,7,8][0-9]{9}$/;
 var phoneRegWithArea = /^1[3|4|5|7|8][0-9]\d{8}]$/;
	var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;
	var re = new RegExp(regu);	
	if (re.test(s)) {
		return msgspan;
	}
	 else {
		if (s.length > 9) {
		if (phoneRegWithArea.test(s)) {
		return msgspan;

		} else {
			return errospan;
			
		}
	} else {
		if (phoneRegNoArea.test(s)) {
			return msgspan;
		} else {

			return errospan;
		}
	}
	}
}


/* 
用途：检查输入字符串是否为空或者全部都是空格 
输入：str 
返回： 
如果全是空返回提示信息,否则返回正确图片 
*/
function isNullspan(str) {
 var msgspan = "&nbsp;&nbsp;&nbsp;<img src='../images/ok.png' style='width:12px;height:12px'>";
 var errospan="此处为必填项";
	if (str == "") return errospan;
	var regu = "^[ ]+$";
	var re = new RegExp(regu);
	if( re.test(str)){
	
	return errospan;
	}else{
	return msgspan;
	}
}

/* 
用途：检查输入字符串是否符合正整数格式 
输入： 
s：字符串 
返回： 
如果通过验证返回正确图片,否则返回提示信息

*/
function isNumberspan(s) {
 var msgspan = "&nbsp;&nbsp;&nbsp;<img src='../images/ok.png' style='width:12px;height:12px'>";
 var errospan="格式不正确";
	var regu = "^[0-9]+$";
	var re = new RegExp(regu);
	if (s.search(re) != -1) {
		return msgspan;
	} else {
		return errospan;
	}
}
/* 
用途：检查输入字符串是否只由汉字、字母组成 
输入： 
dateStr：字符串 
返回： 
如果通过验证返回正确图片,否则返回提示信息

*/
function isChinaOrLettspan(s) { //判断是否是汉字、字母、数字组成 
 var msgspan = "&nbsp;&nbsp;&nbsp;<img src='../images/ok.png' style='width:12px;height:12px'>";
 var errospan="格式不正确";
	var regu = "^[a-zA-Z\u4e00-\u9fa5]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return msgspan;
	} else {
		return errospan;
	}
}

/* 
用途：验证邮政编码是否正确 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false

*/
function checkZipCode(s) {
	var re = /^[1-9][0-9]{5}$/;
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}

/* 
用途：验证身份证号是否正确 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false

*/
function checkCardNo(s) {
	var re = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}
/*
用途：验证ISBN号是否正确 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false

*/
function checkISBN(s) {
    var isbn = /(^\d{13}$)/;
    if (isbn.test(s)) {
        return true;
    }
    else {
        return false;
    }
}
/*
用途：验证正整数 
输入： 
s：字符串 
返回： 
如果通过验证返回true,否则返回false

*/
function checkNum(s) {
    var num = /(^[0-9]*[1-9][0-9]*$)/; //正整数
    if (num.test(s)) {
        return true;
    }
    else {
        return false;
    }
}

/*
用途：得到当前时间
返回：yyyy/mm/dd
*/
function currentDate()
{ 
    var now = new Date();
   
    var year = now.getFullYear();       
    var month = now.getMonth() + 1;    
    var day = now.getDate();                    
   
    var date = year + "/";
   
    if(month < 10)
        date += "0";
   
    date += month + "/";
   
    if(day < 10)
        date += "0";
       
    date += day;
    
    return(date); 
}

/*
用途：删除左右两端的空格
返回：string
*/
function trim() {
	if (str == null || str == "") {
		return "";
	}
	return str.replace(/(^s*)|(s*$)/g, "");
}
 
/*
用途：删除左边的空格
返回：string
*/
 function ltrim(str){
    if (str == null || str =="" )
        return "";
     return str.replace(/(^s*)/g,"");
 }
 
/*
用途：删除右边的空格
返回：string
*/
 function rtrim(str){
    if (str == null || str =="" )
        return "";
     return str.replace(/(s*$)/g,"");
 }

/****************************************************
/*文件名：common.js  信息提醒部分
/*作者：尚辉辉
/*日期：2013 06 01
/*功能描述：
/*      该js里的教师端添加提醒、更新用
/*  户提醒的函数。
/*
/****************************************************


/* 
用途：登录时获得提醒信息个数
输入： 
返回： 含有所有信息的ar rayMng对象
*/
 var NotifyNum=0; 
function getNotifyNum() {
    $.ajax({
        type: "Post",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        url: "../MsgMng.aspx/GetMessageCount",
        data: "{}",
        success: function(data) {
            if (data.d != null) {
                NotifyNum=data.d;
                var innerHtml = '<a class="msg" href="#" >提醒 <span class="num"><span>' + data.d + '</span><i></i></span> </a>';
                $("#notify").html(innerHtml);
            } else {
                showNoData();
            }
        },
        error: function(err) {
            showServerError();
        }
    });
}


function showNotify() {
    $.ajax({
    type: "Post",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: "../MsgMng.aspx/GetTopMessage",
    data: "{}",
    success: function(data) {
        if (data.d != null) {
            var Obj
            if ((typeof (JSON) == "undefined")) Obj = eval("(" + data.d + ")");
            else Obj = JSON.parse(data.d);
            var inner = '<ul> ';
            if (NotifyNum != 0) {
                for (var i = 0; i < NotifyNum && i <= 4; i++) {
                    inner += '<li><div class="content"><b>' + Obj[i].FSZXM + '</b发来关于<b>:' + Obj[i].BT + '</b>的消息:' + Obj[i].NR + '【<b>' + Obj[i].SJ + '</b>】</div> </li>';
                }
            }
            else{
             inner += '<li><div class="content"align="center">暂无新的提醒信息</div> </li>';
            }
            inner += '</ul>';
            $(".bd").html(inner);
        } else {
            showNoData();
        }
    },
    error: function(err) {
        showServerError();
    }
    });
}